"ui";
importClass(android.view.View);
importClass(android.provider.Settings);
importClass(android.content.Intent);
importClass(android.net.Uri);
importClass(android.app.ActivityManager);
importClass(android.content.Context);
importClass(java.lang.Thread);
importClass(android.content.ClipboardManager);

var scriptName = 'A';
var version = '32.5';
var themeColor = '#4EBFDD';
var scriptTitle = scriptName + ' v' + version;
var APPVersion = 'D';
var ScriptUIAllStr = ScriptUI.toString();
var ScriptUIStr = ScriptUIAllStr.slice(ScriptUIAllStr.indexOf('{'), ScriptUIAllStr.lastIndexOf('}')).slice(1, -2).replace(/项目标题/g, scriptTitle).replace(/#4EBFDD/g, themeColor);
configIDArr = ScriptUIStr.match(/ id( )?=( )?["|'].*?["|']/g).map(item => item.replace(/ id( )?=( )?["|']|"|'/g, ''));
password = '8848';

ui.statusBarColor(themeColor);
ui.layout(ScriptUIStr);

// 获取系统剪贴板内容
function getClipboardText() {
    var clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE);
    var clipData = clipboard.getPrimaryClip();
    if (clipData != null && clipData.getItemCount() > 0) {
        return clipData.getItemAt(0).getText().toString();
    }
    return "";
}

// 检查无障碍服务是否开启
function isAccessibilityServiceEnabled() {
    let enabledServices = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
    return enabledServices && enabledServices.includes(context.getPackageName() + "/com.stardust.autojs.core.accessibility.AccessibilityService");
}

// 检查悬浮窗权限是否开启
function isFloatyServiceEnabled() {
    return Settings.canDrawOverlays(context);
}

// 跳转到无障碍服务设置
function openAccessibilitySettings() {
    app.startActivity({
        action: "android.settings.ACCESSIBILITY_SETTINGS"
    });
}

// 跳转到悬浮窗权限设置
function openFloatySettings() {
    var intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
    intent.setData(Uri.parse("package:" + context.getPackageName()));
    app.startActivity(intent);
}

// 跳转到截图权限设置
function openScreenshotSettings() {
    let Thread = threads.start(function() {
        if (auto.service != null) {  //如果已经获得无障碍权限
            //由于系统间同意授权的文本不同，采用正则表达式
            let Allow = textMatches(/(允许|立即开始|统一)/).findOne(10 * 1000);
            if (Allow) {
                Allow.click();
            }
        }
    });
    if (!requestScreenCapture()) {
        log("请求截图权限失败");
        return false;
    } else {
        Thread.interrupt();
        log("已获得截图权限");
        return true;
    }
}

// 监听无障碍服务开关
ui.autoService.setOnCheckedChangeListener(function (widget, checked) {
    if (checked) {
        if (isAccessibilityServiceEnabled()) {
            toast("无障碍服务已开启");
        } else {
            toast("跳转到无障碍服务设置");
            openAccessibilitySettings();
        }
    } else {
        toast("无障碍服务已关闭");
    }
});








ui.cutService.setOnClickListener(function () {
    new Thread(function () {
        openScreenshotSettings();
    }).start();
});


function ScriptUI() {
    <vertical>
        <appbar>
            <toolbar bg="#4EBFDD" layout_height="70" margin="-2" id="toolbar" title="项目标题" />
        </appbar>
        <ScrollView>
            <vertical marginTop="5">
                <card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
                    <vertical padding="18 8" h="auto">
                        <linear>
                            <Switch margin="12 0" layout_weight="1" id="autoService" text="无障碍服务" textSize="15sp" checked="{{auto.service != null}}" />
                            <Switch margin="12 0" layout_weight="1" id="floatyService" text="悬浮窗权限" textSize="15sp" checked="false" />
                            <Switch margin="12 0" layout_weight="1" id="cutService" text="截图权限" textSize="15sp" checked="false" />
                        </linear>
                    </vertical>
                    <View bg="#4EBFDD" h="*" w="5" /> 
                </card>

                <card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
                    <vertical padding="18 8" h="auto">
                        <text text="模式选择:" marginLeft="5" w="auto" textStyle="bold" textColor='black'/> 

                        <radiogroup id="当前模式" orientation="horizontal">
                            <radio id="选择框_收藏" text="收藏" textColor="black" checked='true'/>
                            <radio id="选择框_推荐" text="推荐" textColor="black" checked='false'/>
                        </radiogroup>

                        <text text="版本选择:" marginTop="10" textStyle="bold" textColor='black'/>
                        <radiogroup id="版本选择" orientation="horizontal">
                            <radio id="选择框_正版" text="正版" textColor="black" checked='true'/>
                            <radio id="选择框_极速" text="极速" textColor="black" checked='false'/>
                        </radiogroup>

                    </vertical>
                    <View bg="#4EBFDD" h="*" w="5" />
                </card>

                <View bg="#4EBFDD" h="*" w="5" />

                <card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
                    <vertical padding="18 8" marginBottom="2" h="auto">
                        <text text="[详细设置]" color="#FFA500" textStyle="bold" textSize="15sp"/>

                        <horizontal>
                            <text text="主页停留间隔" textStyle="bold" textSize="15sp"/>
                            <input id="输入框_停留最小量" text="3" color="#666666" w="0" layout_weight="1"/> 
                            <text text="-" textStyle="bold" textSize="15sp" marginLeft="5" marginRight="5"/> 
                            <input id="输入框_停留最大量" text="5" color="#666666" w="0" layout_weight="1"/> 
                        </horizontal>

                        <horizontal>
                            <text text="任务间隔" textStyle="bold" textSize="15sp"/>
                            <input id="输入框_任务最小间隔" text="1" color="#666666" w="0" layout_weight="1"/> 
                            <text text="-" textStyle="bold" textSize="15sp" marginLeft="5" marginRight="5"/> 
                            <input id="输入框_任务最大间隔" text="2" color="#666666" w="0" layout_weight="1"/> 
                        </horizontal>

                        <horizontal>
                        <text text="服务器数据:" textStyle="bold" textSize="15sp" layout_weight="1"/>
                            <EditText id="服务器数据" text="01" color="#666666" w="0dp" layout_weight="3" minLines="2" maxLines="3" inputType="textMultiLine"/>
                            <button id="获取" text="获取" textSize="15" color="#ffffff" bg="#4EBFDD" w="auto"/>
                        </horizontal>

                        <horizontal>
                     <text text="主页ID:" textStyle="bold" textSize="15sp"/>
                       <EditText 
                        id="主页ID" 
                     text="102197670859/1503757932977182/87221707423" 
                     color="#666666" 
                     w="*" 
                      h="120dp" 
                      maxLines="5" 
                      scrollbars="vertical" 
                         inputType="textMultiLine"/>
                    </horizontal>


                    </vertical>
                    <View bg="#4EBFDD" h="*" w="5" />
                </card>

                <card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
                    <button id="startScript" h="auto" text="开 始 运 行" textSize="17" textStyle="bold" color="#ffffff" bg="#4EBFDD" foreground="?selectableItemBackground" layout_gravity="bottom" />
                    <View bg="#4EBFDD" h="*" w="5" />
                </card>
                <card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
        <horizontal>
        
        <button id="startDR" h="auto" w="0" layout_weight="1" text="导 入 数 据" 
            textSize="17" textStyle="bold" color="#ffffff" bg="#4EBFDD" 
            foreground="?selectableItemBackground" layout_gravity="center" marginRight="10dp" />

        
        <button id="getSubscription" h="auto" w="0" layout_weight="1" text="获 取 订 阅" 
            textSize="17" textStyle="bold" color="#ffffff" bg="#4EBFDD" 
            foreground="?selectableItemBackground" layout_gravity="center" marginLeft="10dp" />
    </horizontal>
</card>

            </vertical>
        </ScrollView>
    </vertical>
}

function yhsp() {//用户视频判断
    if(ui.选择框_极速.checked){
        var 视频= id("com.ss.android.ugc.aweme.lite:id/container").findOne(3500)// sp主页视频
        var 主页视频=id("com.ss.android.ugc.aweme.lite:id/container"); 
        
    }else{
        var 视频= id("com.ss.android.ugc.aweme:id/container").findOne(3500)// sp主页视频
        var 主页视频=id("com.ss.android.ugc.aweme:id/container"); 
    }

    


    let sp= 视频
    
    if (sp) {
        sleep(1000)
        click("作品")
        sleep(1000)
        back()
        let zysp=主页视频
        let spdj = 点击(zysp); // 执行点击操作
        if (spdj) { // 这里判断是否成功了

            toast("点击视频成功");
            sleep(1000);
            toast("等待1秒");
            return true;
        } else { // 失败了
            back();
            toast("点击视频失败啦");
            return false;
        }
    } else { // 视频不存在的情况
        toast("未找到视频");
        back();
        return false;
    }
} 
function 点击(elementId){//elementid这是传递过来的id
    log(elementId)
    let element = elementId.findOne(3000); // 获取第一个匹配的元素
    if (element != null) {
        let bounds = element.bounds(); // 获取元素的坐标
        if (bounds != null) {
            // 点击该坐标
            click(bounds.centerX(), bounds.centerY());
            toast("点击成功");
            return true;
        } else {
            toast("失败");
            return false;
        }
    } else {
        toast("失败");
        return false;
    }
}

function sc项目(){
    sleep(1500)
    let 主页视频进入状态 = yhsp(); // 执行点击操作
    sleep(1500)
   if(主页视频进入状态){
    if(ui.选择框_极速.checked){
        var 收藏状态=id("com.ss.android.ugc.aweme.lite:id/bli").findOne(3500)
        var 视频收藏 = id("com.ss.android.ugc.aweme.lite:id/bli");     

    }else{
        var 收藏状态=id("com.ss.android.ugc.aweme:id/dq0").findOne(3500)
        var 视频收藏 = id("com.ss.android.ugc.aweme:id/dq0"); 
    }
    sleep(500)
    let sc状态= 收藏状态
    sleep(500)
    if (sc状态) {
        let spsc = 视频收藏
        sleep(100)
        let sc点击 = 点击(spsc); // 执行点击操作
        if (sc点击) { // 这里判断是否成功了
            toast("收藏成功");
            sleep(1000);
            toast("等待1秒");
            back();
            return true;
            
        } else { // 失败了
            back();
            toast("收藏失败");
            return false;
           
        }
    } else { // 视频收藏不存在的情况
        toast("收藏不存在");
        back();
        return false;
    }
   }


       
      
}

function tj项目(){
    sleep(1500)
        if(ui.选择框_极速.checked){
            sleep(1500)
            let 主页视频进入状态 = yhsp(); // 执行点击操作
            if(主页视频进入状态){
                
                let sc状态= id("com.ss.android.ugc.aweme.lite:id/lc1").findOne(3500)
                if (sc状态) {
                    let sptj = id("com.ss.android.ugc.aweme.lite:id/lc1"); 
                    let tj点击 = 点击(sptj); // 执行点击操作
                    sleep(1000)
                    if (tj点击) { // 这里判断是否成功了
                let 推荐按钮 =  id("com.ss.android.ugc.aweme.lite:id/nup").findOne(3500)
                sleep(800)
                        if (sc状态){
                            if(推荐按钮.text()!="推荐"){
                                toast("已推荐")
                                back()
                                sleep(300)
                                back()
                                return true;
                            }else {
                                click("推荐")
                                sleep(500)
                                back()
                            }
        
                            
                            
        
        
        
                        }else{
                            toast("按钮不出现")
                            back()
                            return false;
                        }
        
        
        
        
        
        
                    } else { // 失败了
                        back();
                        toast("推荐失败");
                        return false;
                       
                    }
                } else { // 视频收藏不存在的情况
                    toast("推荐不存在");
                    back();
                    return false;
                }
               }
            
            

        }else{

            sleep(1500)
            let 主页视频进入状态 = yhsp(); // 执行点击操作
            if(主页视频进入状态){
                
                let sc状态= id("com.ss.android.ugc.aweme:id/xsv").findOne(3500)
                if (sc状态) {
                    let sptj = id("com.ss.android.ugc.aweme:id/xsv"); 
                    let tj点击 = 点击(sptj); // 执行点击操作
                    sleep(1000)
                    if (tj点击) { // 这里判断是否成功了
                let 推荐按钮 =  id("com.ss.android.ugc.aweme:id/xpk").findOne(3500)
                sleep(800)
                        if (sc状态){
                            if(推荐按钮.text()!="推荐"){
                                toast("已推荐")
                                back()
                                sleep(300)
                                back()
                                return true;
                            }else {
                                click("推荐")
                                sleep(500)
                                back()
                            }
        
                            
                            
        
        
        
                        }else{
                            toast("按钮不出现")
                            back()
                            return false;
                        }
        
        
        
        
        
        
                    } else { // 失败了
                        back();
                        toast("推荐失败");
                        return false;
                       
                    }
                } else { // 视频收藏不存在的情况
                    toast("推荐不存在");
                    back();
                    return false;
                }
               }
            
            

        }
}

function Activity服务正版(用户id){
    
    if(ui.选择框_极速.checked){
        app.startActivity({//极速版snssdk2329
            action: "android.intent.action.VIEW",
             data: "snssdk2329://user/profile/"+用户id
         }); // Activity服务拉起  
    }else{
        app.startActivity({//极速版snssdk2329
            action: "android.intent.action.VIEW",
             data: "snssdk1128://user/profile/"+用户id
         }); // Activity服务拉起  
    }
    
   
 }

 let progressWindow; // 全局变量，存储悬浮窗对象

 function 日志() {
    progressWindow = floaty.window(
        <frame background="#AA000000" padding="10dp" radius="10dp">
            <vertical>
                <text id="taskId" text="任务ID: 0" textSize="16sp" textColor="#FFBB86FC" />
                <text id="remainingTasks" text="剩余任务: 0" textSize="16sp" textColor="#FFBB86FC" />
                <button id="endBtn" text="结束任务" />
            </vertical>
        </frame>
    );

    // 设置悬浮窗样式和位置
    progressWindow.setPosition(100, 200);
    progressWindow.setSize(-2, -2);

    // 设置结束按钮的点击事件
    progressWindow.endBtn.click(function () {
        toast("结束任务");

        // 确保所有线程被终止
        threads.shutDownAll(); 

        // 确保主线程被终止
        exit();
    });
}

 
 // 更新任务进度
 function updateProgress(currentTaskId, remainingTasks) {
     ui.run(() => {
         progressWindow.taskId.setText("任务ID: " + currentTaskId);
         progressWindow.remainingTasks.setText("剩余任务: " + remainingTasks);
     });
 }
 
 // 任务处理逻辑
 function 正版() {
     let text = ui.主页ID.getText(); // 获取主页ID文本框内容
     let textStr = String(text).trim(); // 转为字符串并去除两端空格
 
     if (textStr) { // 如果文本不为空
         let lines = textStr.split("\n"); // 按行分割文本
 
         for (let i = 0; i < lines.length; i++) {
             let userId = lines[i].trim(); // 获取当前任务ID，去掉两边空格
             if (userId) { // 如果任务ID有效
                 updateProgress(userId, lines.length - i - 1); // 更新悬浮窗进度
                 Activity服务正版(userId); // 调用具体任务处理逻辑
                 sleep(3000); // 模拟任务耗时
                 if (ui.选择框_收藏.checked) {
                     sc项目(); // 执行收藏逻辑
                 } else {
                     tj项目(); // 执行推荐逻辑
                 }
                 toast("已处理用户ID：" + userId);
                 sleep(1000); // 短暂等待
                 back(); // 返回上一界面
                 sleep(1000)
                 back(); // 返回上一界面
             } else {
                 toast("跳过空行");
             }
         }
 
         toast("所有任务已处理完毕");
     } else {
         toast("获取的文本内容不是有效的字符串");
     }
 }
 
 // 监听“开始运行”按钮点击事件
 ui.startScript.setOnClickListener(function () {
     toast("开始运行，任务启动");
     new Thread(function () {
         sleep(2000); // 模拟任务启动前的等待
         日志(); // 初始化悬浮窗
         正版(); // 开始任务处理
         alert("任务完成"); // 提示任务完成
         threads.shutDownAll(); // 停止所有线程
         exit(); // 退出脚本
     }).start();
 });
 
 // 监听“导入数据”按钮点击事件
 ui.startDR.setOnClickListener(function () {
     let clipboardContent = getClipboardText(); // 获取剪贴板内容
     if (clipboardContent) {
         ui.主页ID.setText(clipboardContent); // 将剪贴板内容写入主页ID
         toast("已导入剪贴板内容到主页ID");
     } else {
         toast("剪贴板没有内容");
     }
 });
 
 // 监听“获取服务器数据”按钮点击事件
 ui.获取.on("click", function () {
     let serverData = ui.服务器数据.getText().toString().trim(); // 获取服务器数据文本框内容
     if (!serverData) {
         toast("服务器数据不能为空！");
         return;
     }
 
     let url = `http://38.207.165.41:8080/directlink/1/数据/${serverData}.txt`; // 构建下载地址
     let savePath = files.join(files.getSdcardPath(), `${serverData}.txt`); // 本地保存路径
     toast("正在下载文件，请稍候...");
 
     threads.start(function () {
         try {
             let res = http.get(url);
             if (res.statusCode === 200) {
                 files.writeBytes(savePath, res.body.bytes()); // 将文件保存到本地
                 toast("文件下载成功！");
                 let fileContent = files.read(savePath).trim(); // 读取文件内容
                 if (fileContent) {
                     ui.run(() => {
                         ui.主页ID.setText(fileContent); // 将文件内容写入主页ID
                         toast("已成功导入数据到主页ID！");
                     });
                 } else {
                     toast("文件内容为空！");
                 }
             } else {
                 toast(`文件下载失败，状态码: ${res.statusCode}`);
             }
         } catch (err) {
             toast(`下载文件出错: ${err.message}`);
         }
     });
 });
 ui.getSubscription.on("click", () => {
    threads.start(function () {
        // 向指定 URL 发起 HTTP 请求
        let url = "https://gitee.com/XiaoL9573/hot-update-ks/raw/master/%E5%A4%87%E4%BB%BD/%E8%AE%A2%E9%98%85%E8%8E%B7%E5%8F%96.txt";

        try {
            let res = http.get(url);
            if (res.statusCode == 200) {
                let content = res.body.string(); // 获取响应内容

                ui.run(function () {
                    // 将订阅内容复制到剪贴板
                    setClip(content);
                    toast("内容已复制到剪贴板！");
                   let cl="clas" //傻逼gitee不允许clas加h字符
                   
                    app.launchPackage("com.github.metacubex."+cl+"h.meta"); // 替换为正确的包名
                 
                    let subscriptionUrl = "clashmeta://install-config?url=" + encodeURIComponent(content);
                    let intent = app.intent({
                        action: "VIEW",
                        data: subscriptionUrl,
                        packageName: "com.github.metacubex."+cl+"h.meta", // 确保包名正确
                        flags: [Intent.FLAG_ACTIVITY_NEW_TASK]
                    });

                    app.startActivity(intent); 

                    toast("订阅已成功导入！");
                });
            } else {
                ui.run(function () {
                    toast("请求失败，状态码：" + res.statusCode);
                });
            }
        } catch (e) {
            ui.run(function () {
                toast("请求发生错误：" + e.message);
            });
        }
    });
});

